]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
LayoutManager: Add primary-fullscreen-changed signal
authorAdel Gadllah <adel.gadllah@gmail.com>
Wed, 6 Jun 2012 22:20:23 +0000 (00:20 +0200)
committerAdel Gadllah <adel.gadllah@gmail.com>
Thu, 7 Jun 2012 18:36:48 +0000 (20:36 +0200)
Add a signal to the LayoutManager which gets emitted once the primary monitor
enters or leaves the fullscreen state.

https://bugzilla.gnome.org/show_bug.cgi?id=677590

js/ui/layout.js

index 66bf995b95e1893f4848bd2e3549497a8eed9432..6351ad9eb88a32c22a241bd68df213f86212a1f0 100644 (file)
@@ -53,6 +53,10 @@ const LayoutManager = new Lang.Class({
         global.screen.connect('monitors-changed',
                               Lang.bind(this, this._monitorsChanged));
         this._monitorsChanged();
+
+        this._chrome.connect('primary-fullscreen-changed', Lang.bind(this, function(chrome, state) {
+            this.emit('primary-fullscreen-changed', state);
+        }));
     },
 
     // This is called by Main after everything else is constructed;
@@ -852,6 +856,8 @@ const Chrome = new Lang.Class({
         for (let i = 0; i < this._monitors.length; i++)
             wasInFullscreen[i] = this._monitors[i].inFullscreen;
 
+        let primaryWasInFullscreen = this._primaryMonitor.inFullscreen;
+
         this._updateFullscreen();
 
         let changed = false;
@@ -861,10 +867,15 @@ const Chrome = new Lang.Class({
                 break;
             }
         }
+
         if (changed) {
             this._updateVisibility();
             this._queueUpdateRegions();
         }
+
+        if (primaryWasInFullscreen != this._primaryMonitor.inFullscreen) {
+            this.emit('primary-fullscreen-changed', this._primaryMonitor.inFullscreen);
+        }
     },
 
     updateRegions: function() {
@@ -979,3 +990,5 @@ const Chrome = new Lang.Class({
         return false;
     }
 });
+
+Signals.addSignalMethods(Chrome.prototype);